"""
切片:

"""
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list1[:5])
print(list1[5:])
print(list1[2:9:2])
print(list1[::])
print(list1 is list1[::])
print(list1[::-2])
'''
拼接：
    
'''
list2 = [123, 3453]
list3 = list1 + list2
print(list3, id(list3))
print(f'list1地址={id(list1)}')
list1 = list1 + list2  # 产生新的地址
print(id(list1))
list1 += list2  # 类似于 extend，直接在 list 的原来地址拼接
print(list1, id(list1))
list1.extend(list2)
print(list1, id(list1))
'''
增删改查：
    append：追加
    insert：插入，在某个 index 位置插入，其他元素向后移动。
    删除：pop、remove、clear
'''
list1 = []
print(list1, id(list1))
list1.append(1)
print(list1, id(list1))
list1.append(2)
print(list1, id(list1))
list1.insert(0, 2)
print(list1, id(list1))
list1.pop()
print(list1, id(list1))
list1.pop(0)
print(list1, id(list1))
list1 = ['听音乐', '看电影', '看电影', '打篮球', '踢足球']
print(list1, id(list1))
list1.remove('打篮球')
print(list1, id(list1))
if '拉条' in list1:  # in：元素是否在列表中
    list1.remove('拉条')
print(list1, id(list1))
# 删除多个元素：
# 此种方式效率高，但是编码不够简洁。
i = 0
while i < len(list1):
    if list1[i] == '看电影':
        list1.remove('看电影')
        continue
    i += 1
print(list1, id(list1))
list1 = ['听音乐', '看电影', '看电影', '打篮球', '踢足球']
# 此种方式编码简洁，但是存在重复遍历元素的问题。
while '看电影' in list1:
    list1.remove('看电影')
print(list1, id(list1))
'''
列表推导式
'''
list1 = [i for i in range(10)]
print(list1)
list2 = [i + 1 for i in range(10) if i % 2 == 0]
print(list2)
list3 = [i + 1 for i in range(0, 10, 2)]
print(list3)
list4 = [i for i in range(10) if i % 2 == 0 if i % 3 == 0]
print(list4)
list5 = [i for i in range(10) if i % 2 == 0 and i % 3 == 0]
print(list5)
list6 = [i if i % 2 == 0 else i + 1 for i in range(10)]
print(list6)
list7=[(i,j) for i in range(3) for j in range(3)]
print(list7)
